const dayjs = require('dayjs');

module.exports = {
  schedule: {
    interval: '10m', // s:秒 m:分 h:时 d:天 w:周
    type: 'worker', // worker: 指定一个 worker 要执行 or all: 指定所有worker执行
    immediate: true, // 配置了该参数为 true 时，这个定时任务会在应用启动并 ready 后立刻执行一次这个定时任务。
    disable: true, // 配置该参数为 true 时，这个定时任务不会被启动。
    env: [ 'local', 'prod' ], // 数组，仅在指定的环境下才启动该定时任务。'local' | 'unittest' | 'prod'
  },
  async task(ctx) {
    const { service } = ctx;
    const readFile = await ctx.helper.getFileContent('app/public/weixinConfig.json');
    let tokenUpdateDate = '';
    try {
      tokenUpdateDate = JSON.parse(readFile)?.date || new Date().toLocaleString();
    } catch {
      tokenUpdateDate = new Date().toLocaleString();
    }

    // 对比时间间隔，如果大于110分钟，则重新获取access_token
    if (!readFile || dayjs(new Date().toLocaleString()).diff(tokenUpdateDate, 'm') >= 110) {
      await service.wechatService.getToken();
    }
    console.log('定时更新access_token任务执行l', new Date().toLocaleString());
  },
};
